package main

import (
	"github.com/gin-gonic/gin"
	log "github.com/sirupsen/logrus"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"io/ioutil"
	"os"
	"user_manger_go/controller"
	"user_manger_go/dao"
	"user_manger_go/service/impl"
)

func main() {
	//1.连接数据库
	dsn := "root:root@tcp(127.0.0.1:3306)/jinjihu?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		return
	}

	//2.创建controller
	userDao := dao.NewDao(db)
	userServiceImpl := impl.NewUserService(userDao)
	userController := controller.NewUserController(userServiceImpl)

	//关闭gin日志
	gin.SetMode(gin.ReleaseMode)
	gin.DefaultWriter = ioutil.Discard
	//3.创建路由
	r := gin.Default()
	//4.绑定路由规则，执行的函数
	userGroup := r.Group("/v1")
	{
		userGroup.GET("/users", userController.GetUsers)
		userGroup.POST("/user",userController.InsertUser)
	}
	// 3.监听端口，默认在8080
	log.Info("start 8080")
	r.Run(":8080")
}

func init() {
	// 设置日志格式为json格式
	log.SetFormatter(&log.JSONFormatter{})

	// 设置将日志输出到标准输出（默认的输出为stderr，标准错误）
	// 日志消息输出可以是任意的io.writer类型
	log.SetOutput(os.Stdout)

	// 设置日志级别为warn以上
	log.SetLevel(log.InfoLevel)
}
